S3 BigLakeでエクスポートを試してみる
はじめに
データアナリティクス事業本部のkobayashiです。
前回BigQueryの外部接続を使ってAmazon S3上のデータをBigQuery上にテーブルとして作成してみました。今回は前回の外部テーブルの環境を使ってS3をソースとする外部テーブルに対してクエリを実行して、その実行結果を再びS3にファイルとして作成したいと思います。
クエリ結果を Amazon S3 にエクスポートする | BigQuery | Google Cloud
前回の記事
外部テーブルへのクエリ結果を Amazon S3 にエクスポートする
S3をソースとする外部テーブルのクエリ結果はEXPORT DATA
ステートメントを使って簡単にS3上に出力することができます。
実行するには以下のリソースが必要ですが、外部接続を作成してあり外部テーブルを作成している状態でしたらすでに整っているはずです。
- Amazon S3 バケットにアクセスするための外部接続
- Amazon S3 BigLake テーブル
- 正しい Amazon Web Services(AWS)の Identity and Access Management(IAM)ポリシー
では早速以下のSQLを実行してエクスポートを試してみます。
EXPORT DATA WITH CONNECTION `aws-us-east-1`.ssd_s3_biglake OPTIONS(uri="s3://{バケット名}/export/*", format='CSV', -- ファイルフォーマットを指定。CSV, JSON, AVROが選択可能 overwrite=true, -- ファイルが存在していた場合の上書き有無。未指定の場合はfalse header=true, -- ヘッダ行の有無。未指定の場合はfalse field_delimiter=',' -- 区切り文字を文字列として指定 ) AS SELECT * FROM s3_biglake_test.major_results_2020 WHERE pref_cd < 10;
上記のSQLを実行するとs3://{バケット名}/export/000000000000
にクエリ結果が出力されます。
上記のクエリですが、最初は外部接続のリージョンのaws-us-east-1
をバッククォートで囲わずに実行したためSyntax error: Expected keyword AS but got "-" at [1:32]
のエラーが出ました。必ずバッククォートで囲むようにしましょう。
まとめ
BigQueryの外部テーブルの環境を使ってS3をソースとする外部テーブルに対してクエリを実行して、その実行結果を再びS3にファイルとして作成しました。S3上のファイルを加工するだけにもBigQueryは使える便利なサービスです。
最後まで読んで頂いてありがとうございました。